1. Field of the Invention
The present invention relates generally to memory management and, more particularly, to managing memory space.
2. Description of Related Art
Conventional network devices, such as routers, transfer packets through a network from a source to a destination. Typically, the network device receives packets from a number of different data streams and a memory subsystem stores the packets while the packets are processed. As the number of data streams supported by the network device increases, a number of components may be writing data to the memory subsystem simultaneously.
One drawback with this approach is that when multiple components are writing data to the same memory, one of the components may write to a memory location that has already been written to by another component. This may result in data associated with one data packet inadvertently overwriting data from another data packet.
Another drawback occurs as the number of data streams supported by the network device and the line rates increase. In this case, the network device must be able to process the data while maintaining the required line rate for each of the streams. Some network devices store the memory address locations identifying where the data associated with each of the data packets is stored (i.e., address pointers). As the memory size increases, however, the logistics associated with storing the address pointer information and forwarding this information to other systems/subsystems in the network device causes problems.
For example, as the size of the memory increases to support a large number of data streams, the size of the address pointers correspondingly increase. The space needed to store these address pointers for all the data streams becomes considerable. With chip space at a premium, the network device is often unable to store all this information. This may result in the network device dropping packets. In addition, forwarding the address pointer information to other systems/subsystems that need this information may cause delays when the address pointers become large.